package com.ecommerce.exception;

/**
 * 业务处理异常
 * <p>
 * 用于表示业务逻辑处理过程中发生的异常情况，
 * 继承自RuntimeException，属于非受检异常
 */
public class BusinessException extends RuntimeException {

    /**
     * 默认构造函数
     * <p>
     * 创建一个不带详细消息和原因的BusinessException实例
     */
    public BusinessException() {
        super();
    }

    /**
     * 带详细消息的构造函数
     *
     * @param message 异常详细信息，用于描述具体的业务异常情况
     */
    public BusinessException(String message) {
        super(message);
    }

    /**
     * 带详细消息和原因的构造函数
     *
     * @param message 异常详细信息
     * @param cause 导致此异常的根本原因（通常用于异常链）
     */
    public BusinessException(String message, Throwable cause) {
        super(message, cause);
    }

    /**
     * 带原因的构造函数
     *
     * @param cause 导致此异常的根本原因
     */
    public BusinessException(Throwable cause) {
        super(cause);
    }

    /**
     * 完全参数化的构造函数
     * <p>
     * 提供对异常行为的更精细控制
     *
     * @param message 异常详细信息
     * @param cause 导致此异常的根本原因
     * @param enableSuppression 是否启用抑制机制
     * @param writableStackTrace 是否生成可写的堆栈跟踪
     */
    protected BusinessException(String message, Throwable cause,
                                boolean enableSuppression,
                                boolean writableStackTrace) {
        super(message, cause, enableSuppression, writableStackTrace);
    }
}